package me.zhengjie.modules.web.service.course;

import me.zhengjie.config.entity.PageData;
import me.zhengjie.modules.system.domain.CourseInfo;
import me.zhengjie.modules.web.domain.course.*;
import me.zhengjie.modules.web.domain.order.OrderListRequest;
import me.zhengjie.modules.web.domain.order.OrderListResponse;

import java.util.List;

public interface ICourseService {

    /**
     * 课程首页接口
     * @return
     */
    List<CourseIndexResp> courseIndex();

    /**
     * 课程列表
     * @param req
     * @return
     */
    List<CourseIndexResp> courseList(CourseListReq req);
    /**
     * 课程详情
     * @param courseNo
     * @return
     */
    CourseDetailResp courseDetail(String courseNo);

    /**
     * 打卡
     * @param req
     * @return
     */
    boolean clickIn(CourseClockInReq req);

    /**
     * 获取签到详情
     * @param req
     * @return
     */
    CourseSignInDetailResp getSignInDetail(CourseSignInDetailReq req);

    /**
     * 签到
     * @param req
     * @return
     */
    CourseSignInResp signin(CourseSignInReq req);

    /**
     * 我的打卡列表
     * @return
     */
    List<CourseClockInListResp> clockInListV2(CourseClockInListRequest request);
    PageData<CourseClockInListResp> clockInListV3(CourseClockInListRequest request);
    PageData<CourseClockInListResp> clockInListV4(CourseClockInListRequest request);
    /**
     * 打卡详情
     * @param request
     * @return
     */
    CourseClockInDetailResp clockInDetail(CourseClockInDetailRequest request);

    /**
     * 自动加入班级
     * @return
     */
    boolean autoJoinClass(String openId,String courseNo);

    /**
     * 根据手机号查询是否已经缴纳餐费
     * @param req
     * @return
     */
    CourseSignInMealsResp getMealsByMobile(CourseSignInMealsReq req);

    /**
     * 添加
     * @param req
     * @return
     */
    boolean addApplicants(CourseApplicantsReq req);

    /**
     * 报名人列表
     * @param req
     * @return
     */
    List<CourseApplicantsResp> applicantsList(CourseApplicantsReq req);

    CourseInfo getCourseInfoByCache(String courseNo);
}
